package com.ncmmall.domain.business.order.groupbooking;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.ncmmall.domain.business.goods.sku.GoodsSku;
import com.ncmmall.domain.security.user.WebUser;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;

import javax.persistence.*;
import java.sql.Timestamp;

/**
 * @author linxs
 * @Description: 订单拼团人员
 * @Date: 2020-02-29 08:34
 */
@Entity
@Table(name = "mall_groupbooking_order")
@Access(AccessType.FIELD)
@Getter
@Setter
public class GroupBookingOrder {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    /**
     * 订单编号
     */
    private String orderNo;

    /**
     * 所属会员
     */
    @JsonBackReference
    @OneToOne
    private WebUser member;

    /**
     * 所属商家
     */
    @JsonBackReference
    @OneToOne
    private WebUser merchant;

    /**
     * 所属拼团订单
     */
    @JsonBackReference
    @ManyToOne
    @JoinColumn(name = "groupBooking_id")
    @NotFound(action = NotFoundAction.IGNORE)
    private GroupBooking groupBooking;

    /**
     * 所属sku
     */
    @OneToOne
    private GoodsSku sku;

    /**
     * 订单状态
     * 1、提交订单（待付款）
     * 2、付款成功（待拼团成功）
     * 3、拼团成功
     * 4、拼团失败（已退款）
     * 5、已取消
     */
    private int status;

    /**
     * 购买数量
     */
    private int quantity;

    /**
     * 规格说明(sku组合规格名称）
     */
    private String specs;

    /**
     * 参团时间
     */
    private Timestamp createTime;

    /**
     * 1、团长
     * 2、参团
     */
    private int type;

    /**
     * 订单总价(商品小计 + 运费)
     */
    private double price;

    /**
     * 商品小计价格
     */
    private double goodsSubtotalPrice;

    /**
     * 运费
     */
    private double freightPrice;

    /**
     * 配送方式
     * 1、快递
     * 2、自提
     */
    private int shippingMethod;

    /**
     * 自提地址
     */
    private String shippingAddress;

    /**
     * 支付状态
     * 1、支付成功
     * 2、未支付
     */
    private int payStatus;

    /**
     * 完成支付时间
     */
    private Timestamp payTime;

    /**
     * 确认收货时间
     */
    private Timestamp receiptTime;

    /**
     * 支付方式
     * 1、微信支付
     * 2、支付宝支付
     * 3、余额支付
     */
    private int payMethod;

    /**
     * 是否是app支付
     * 1、是
     */
    private int appPay;

    /**
     * 支付流水号
     */
    private String payNo;

    /**
     * 商户退款单号
     * 商户系统内部的退款单号，商户系统内部唯一，只能是数字、大小写字母_-|*@ ，同一退款单号多次请求只退一笔。
     */
    private String outRefundNo;

    /**
     * 收货人
     */
    private String deliveryName;

    /**
     * 收货省份
     */
    private String deliveryProvince;

    /**
     * 收货城市
     */
    private String deliveryCity;

    /**
     * 收货区/县
     */
    private String deliveryArea;

    /**
     * 收货地址
     */
    private String deliveryAddress;

    /**
     * 收货人电话
     */
    private String deliveryMobile;

    /**
     * 物流状态
     */
    private int expressStatus;

    /**
     * 物流公司
     */
    private String expressCompany;

    /**
     * 快递单号
     */
    private String expressesNo;

    /**
     * 备注
     */
    private String note;

    /**
     * 发票类型
     * 1、普票
     * 2、专票
     */
    private int invoiceType;

    /**
     * 是否开具发票
     * 1、不开发票
     * 2、开具发票
     */
    private int haveInvoice;

    /**
     * 发票抬头类型
     * 1、企业
     * 2、个人
     */
    private int invoiceTitleType;

    /**
     * 发票抬头
     */
    private String invoiceTitle;

    /**
     * 发票税号
     */
    private String invoiceTFN;

    @Transient
    private String nickname;

    @Transient
    private String avatar;

    @Transient
    private long memberId;

    @Transient
    private long goodsId;


}
